home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (PO) / Nibble Volume 11, No. 11 (1990-11)(MindCraft Publishing)(Side A).zip / Nibble Volume 11, No. 11 (1990-11)(MindCraft Publishing)(Side A).po / LIFE.SRC.CODE.txt < prev    next >
Text File  |  1996-12-24  |  28KB  |  653 lines

  1. *****************************************************************
  2. *                     LIFE GS  Source Code                      *
  3. *                                                               *
  4. *  By Timothy // Shay                      ORCA/M GS Assembler  *
  5. *                                                               *
  6. *      Copyright 1990     MindCraft Publishing Corporation      *
  7. *****************************************************************
  8.  
  9.          KEEP  LIFE                     ;Output filename:    LIFE
  10.          MCOPY LIFE.MAC                 ;Macro filename: LIFE.MAC
  11. LIFE     START                          ;Assembly begins here
  12.          PHK                            ;Environment: Data Bank
  13.          PLB                            ; equals Code Bank
  14.  
  15. *****************************************************************
  16. *        WakeUp - Start up all the necessary tools              *
  17. *****************************************************************
  18.  
  19. WAKEUP   _TLSTARTUP                     ;Start Tool Locator
  20.          PEA   0                        ;Start Memory Manager
  21.          _MMSTARTUP
  22.          JSR   ERRORS                   ;Check for errors
  23.          PLA                            ;Keep our UserID
  24.          STA   USERID
  25.          _MTSTARTUP                     ;Start Misc Tools
  26.          JSR   ERRORS                   ;Check for errors
  27.          PEA   0                        ;Get direct pages
  28.          PEA   0                        ; for toolbox use
  29.          PEA   0
  30.          PEA   $500                     ;5 pages
  31.          LDA   USERID                   ;Our ID
  32.          PHA
  33.          PEA   $C005                    ;Locked, fixed, aligned,
  34.          PEA   0                        ; fixed address in
  35.          PEA   0                        ; Bank 00
  36.          _NEWHANDLE
  37.          JSR   ERRORS                   ;Check for errors
  38.          PLA                            ;De-reference our handle
  39.          STA   0
  40.          STA   HANDLE
  41.          PLA
  42.          STA   2
  43.          STA   HANDLE+2
  44.          LDA   [0]                      ;Get our direct page
  45.          STA   DPAGES                   ; address and keep it
  46.          PHA                            ;Start Quickdraw/DP addr
  47.          PEA   0                        ;320 mode
  48.          PEA   0                        ;Default pixel map size
  49.          LDA   USERID                   ;Our ID
  50.          PHA
  51.          _QDSTARTUP
  52.          _INITCURSOR
  53.          JSR   ERRORS                   ;Check for errors
  54.          LDA   DPAGES                   ;Start Event Manager
  55.          CLC
  56.          ADC   #$300
  57.          PHA                            ;DP address
  58.          PEA   20                       ;Event queue size
  59.          PEA   0                        ;Minimum X for mouse
  60.          PEA   320                      ;Maximum X for mouse
  61.          PEA   0                        ;Minimum Y for mouse
  62.          PEA   200                      ;Maximum Y for mouse
  63.          LDA   USERID
  64.          PHA                            ;Our ID
  65.          _EMSTARTUP
  66.          JSR   ERRORS                   ;Check for errors
  67. TOOLOAD  PEA   $1B                      ;Load Font Manager
  68.          PEA   0                        ;Any version
  69.          _LOADONETOOL
  70.          BCC   FMSTART
  71.          JSR   ERRORS                   ;Check for errors
  72.          CMP   #$DE01                   ;Recoverable disk error?
  73.          BEQ   TOOLOAD                  ;Yes, try loading again
  74.          JMP   FIN1                     ;No, we're through
  75. FMSTART  LDA   USERID                   ;Start Font Manager
  76.          PHA                            ;Our ID
  77.          LDA   DPAGES
  78.          CLC
  79.          ADC   #$400
  80.          PHA                            ;DP address
  81.          _FMSTARTUP
  82.          JSR   ERRORS                   ;Check for errors
  83.  
  84. *****************************************************************
  85. *        Set rectangles, Initialize game screen and variables   *
  86. *****************************************************************
  87.  
  88. SETRX    STZ   TRSHV1                   ;Start at Cell #0
  89. SETRX1   LDA   TRSHV1                   ;Have we done the last
  90.          CMP   #512                     ; cell?
  91.          BEQ   INIT                     ;Yes, proceed to Init
  92.          ASL   A                        ;No, multiply by 8
  93.          ASL   A                        ; to get the offset into
  94.          ASL   A                        ; the CellRex rectangle
  95.          CLC                            ; data area and push it
  96.          ADC   #CELLREX                 ; to the stack
  97.          PEA   CELLREX|-16
  98.          PHA
  99.          LDA   TRSHV1                   ;Minimum X for this
  100.          AND   #%11111                  ; rectangle is
  101.          ASL   A                        ;(Cell-Int(Cell/32))*8+32
  102.          ASL   A
  103.          ASL   A
  104.          STA   TRSHV2
  105.          CLC
  106.          ADC   #32
  107.          PHA                            ;Push X-min to the stack
  108.          LDA   TRSHV1                   ;Minimum Y for this
  109.          AND   #%111100000              ; rectangle is
  110.          LSR   A                        ; (Int(Cell/32))*8+24
  111.          LSR   A
  112.          CLC
  113.          ADC   #24
  114.          PHA                            ;Push Y-min to the stack
  115.          LDA   TRSHV2                   ;Maximum X for this
  116.          CLC                            ; rectangle is
  117.          ADC   #39                      ;(Cell-Int(Cell/32))*8+39
  118.          PHA                            ;Push X-max to the stack
  119.          LDA   TRSHV1                   ;Maximum Y for this
  120.          AND   #%111100000              ; rectangle is
  121.          LSR   A                        ; (Int(Cell/16))*8+31
  122.          LSR   A
  123.          CLC
  124.          ADC   #31
  125.          PHA                            ;Push Y-max to the stack
  126.          _SETRECT                       ;SetRect
  127.          INC   TRSHV1                   ;Do the next cell
  128.          BRA   SETRX1
  129. INIT     PEA   0                        ;Change color table 0
  130.          POINT COLORS                   ; to our color table
  131.          _SETCOLORTABLE
  132.          PEA   $EEEE                    ;Clear screen to Grey
  133.          _CLEARSCREEN
  134.          PEA   1                        ;Pen = Dk Grey
  135.          _SETSOLIDPENPAT
  136.          STZ   TRSHV1
  137. INIT1    LDY   TRSHV1                   ;Get the offset into the
  138.          LDA   DKPTS,Y                  ; coordinate table for
  139.          PHA                            ; dark lines
  140.          LDA   DKPTS+2,Y
  141.          PHA                            ;Move the pen to the
  142.          _MOVETO                        ; first point found in
  143.          LDY   TRSHV1                   ; the table
  144.          LDA   DKPTS+4,Y
  145.          PHA
  146.          LDA   DKPTS+6,Y
  147.          PHA                            ;Draw a line to the next
  148.          _LINETO                        ; point
  149.          LDY   TRSHV1
  150.          LDA   DKPTS+8,Y
  151.          PHA
  152.          LDA   DKPTS+10,Y
  153.          PHA                            ;And another line to the
  154.          _LINETO                        ; next point
  155.          LDA   TRSHV1                   ;Reset the offset for
  156.          CLC                            ; another three points
  157.          ADC   #12
  158.          STA   TRSHV1
  159.          CMP   #276                     ;Have we done them all?
  160.          BEQ   INIT2                    ;Yes, on to Init2
  161.          CMP   #144                     ;Finished the first set?
  162.          BNE   INIT1                    ;No, back to Init1
  163.          PEA   15                       ;Pen = Lt Grey
  164.          _SETSOLIDPENPAT
  165.          BRA   INIT1                    ;Do the rest
  166. INIT2    PEA   12                       ;Pen= Lt Grey (two Lt
  167.          _SETSOLIDPENPAT                ; Greys in the pallette)
  168.          PEA   $0E00                    ;Install Venice Font
  169.          PEA   $0005
  170.          PEA   1                        ;No scaling
  171.          _INSTALLFONT
  172.          JSR   ERRORS                   ;Check for errors
  173.          CMP   #$DE01                   ;Use System Font if we
  174.          BEQ   INIT2                    ; can't find Venice Font
  175. INIT3    PEA   4                        ;Text mode = foreCOPY
  176.          _SETTEXTMODE
  177.          PEA   9                        ;Text = Blue
  178.          _SETFORECOLOR
  179.          PEA   129                      ;Start title at
  180.          PEA   17                       ; X = 129 and Y = 17
  181.          _MOVETO
  182.          POINT TITLE                    ;Draw title once for
  183.          _DRAWSTRING                    ; blue highlighting
  184.          PEA   13                       ;Text = Red
  185.          _SETFORECOLOR
  186.          PEA   128                      ;Start title at
  187.          PEA   16                       ; X = 128 and Y = 16
  188.          _MOVETO
  189.          POINT TITLE                    ;Draw title
  190.          _DRAWSTRING
  191.          _LOADSYSFONT                   ;Return to system font
  192.          LDA   #HIMSG1                  ;Send Opening message
  193.          LDX   #HIMSG2
  194.          JSR   MSG
  195.          JSR   GETMK                    ;Wait for mouse-down
  196. INIT4    STZ   GENCT                    ;Zero generation count
  197.          LDA   #QSRMSG                  ;Send Quit/Start/Restart
  198.          JSR   MSG1                     ; message
  199.          LDA   #1                       ;All cells are alive
  200.          LDX   #1022
  201. INIT5    STA   NEWPIC,X
  202.          STZ   OLDPIC,X
  203.          DEX
  204.          DEX
  205.          BPL   INIT5
  206.          JSR   FIXPIC                   ;Update the screen
  207.          LDA   #1                       ;All cells are vacant
  208.          LDX   #1022
  209. INIT6    STA   OLDPIC,X
  210.          STZ   NEWPIC,X
  211.          DEX
  212.          DEX
  213.          BPL   INIT6
  214.  
  215. *****************************************************************
  216. *        Selections, Generations, and Evaluations               *
  217. *****************************************************************
  218.  
  219. SELECT   JSR   FIXPIC                   ;Update the screen
  220.          LDA   #SELMSG1                 ;Send Selection message
  221.          LDX   #SELMSG2
  222.          JSR   MSG
  223. SELECT1  JSR   GETMK                    ;Get a valid event
  224.          BCS   SELECT1
  225.          LDA   MKRTN
  226.          CMP   #1024                    ;Quit selected?
  227.          BNE   SELECT2                  ;No, go on
  228.          JMP   FIN                      ;Yes, jump to Fin
  229. SELECT2  CMP   #1028                    ;Restart selected?
  230.          BNE   SELECT3                  ;No, go on
  231.          JMP   INIT4                    ;Yes, back to Init4
  232. SELECT3  CMP   #1026                    ;Start selected?
  233.          BEQ   BEGIN                    ;Yes, on to Begin
  234. SELECT4  LDX   MKRTN                    ;A cell was selected
  235.          LDA   OLDPIC,X
  236.          BNE   SELECT5                  ;It's alive, do Select5
  237.          LDA   #1                       ;Vacant, make it alive
  238.          STA   NEWPIC,X
  239.          BRA   SELECT                   ;Get another selection
  240. SELECT5  STZ   NEWPIC,X                 ;De-select this cell and
  241.          BRA   SELECT                   ; get another selection
  242. BEGIN    LDA   #GENMSG3                 ;Start was selected
  243.          JSR   MSG1                     ;Show new options
  244.          LDA   LIVCT
  245.          STA   LIVST
  246. GEN      PEA   CELLREX|-16              ;Invert chosen option
  247.          LDA   MKRTN2
  248.          CLC
  249.          ADC   #CELLREX
  250.          PHA
  251.          _INVERTRECT
  252. GENER    LDX   #1022                    ;Starting at Cell #511
  253. GENER1   STZ   TRSHV1                   ;Zero NeighborCt
  254.          CPX   #64                      ;Top row?
  255.          BCC   GENER4                   ;Yes, skip top checks
  256.          LDA   OLDPIC-64,X              ;Check top neighbor
  257.          BEQ   GENER2
  258.          INC   TRSHV1                   ;Alive, +1 to NeighborCt
  259. GENER2   TXA
  260.          AND   #$3E                     ;Left column?
  261.          BEQ   GENER3                   ;Yes, skip top left check
  262.          LDA   OLDPIC-66,X              ;Check top left neighbor
  263.          BEQ   GENER3
  264.          INC   TRSHV1                   ;Alive, +1 to NeighborCt
  265. GENER3   TXA
  266.          AND   #$3E
  267.          CMP   #$3E                     ;Right column?
  268.          BEQ   GENER4                   ;Yes, skip top right ck
  269.          LDA   OLDPIC-62,X              ;Check top right neighbor
  270.          BEQ   GENER4
  271.          INC   TRSHV1                   ;Alive, +1 to NeighborCt
  272. GENER4   TXA
  273.          AND   #$3E                     ;Left column?
  274.          BEQ   GENER5                   ;Yes, skip left check
  275.          LDA   OLDPIC-2,X               ;Check left neighbor
  276.          BEQ   GENER5
  277.          INC   TRSHV1                   ;Alive, +1 to NeighborCt
  278. GENER5   TXA
  279.          AND   #$3E
  280.          CMP   #$3E                     ;Right column?
  281.          BEQ   GENER6                   ;Yes, skip right ck
  282.          LDA   OLDPIC+2,X               ;Check right neighbor
  283.          BEQ   GENER6
  284.          INC   TRSHV1                   ;Alive, +1 to NeighborCt
  285. GENER6   CPX   #960                     ;Bottom row?
  286.          BCS   GENER9                   ;Yes, skip bottom checks
  287.          LDA   OLDPIC+64,X              ;Check bottom neighbor
  288.          BEQ   GENER7
  289.          INC   TRSHV1                   ;Alive, +1 to NeighborCt
  290. GENER7   TXA
  291.          AND   #$3E                     ;Left column?
  292.          BEQ   GENER8                   ;Yes, skip btm left check
  293.          LDA   OLDPIC+62,X              ;Check bottom left
  294.          BEQ   GENER8                   ;neighbor
  295.          INC   TRSHV1                   ;Alive, +1 to NeighborCt
  296. GENER8   TXA
  297.          AND   #$3E
  298.          CMP   #$3E                     ;Right column?
  299.          BEQ   GENER9                   ;Yes, skip btm right ck
  300.          LDA   OLDPIC+66,X              ;Check btm right neighbor
  301.          BEQ   GENER9
  302.          INC   TRSHV1                   ;Alive, + to NeighborCt
  303. GENER9   LDA   OLDPIC,X                 ;Current cell alive?
  304.          BEQ   GENERA                   ;No, do GenerA
  305.          LDA   TRSHV1                   ;Alive with two
  306.          CMP   #2
  307.          BEQ   GENERC                   ; or three live
  308.          CMP   #3                       ; neighbors, do GenerC to
  309.          BEQ   GENERC                   ; stay alive
  310.          BRA   GENERB                   ;Otherwise, do GenerB
  311. GENERA   LDA   TRSHV1                   ;Vacant with three live
  312.          CMP   #3                       ; neighbors, do GenerC to
  313.          BEQ   GENERC                   ; come alive
  314. GENERB   STZ   NEWPIC,X                 ;Cell will not be alive
  315.          BRA   GENERD                   ; in the new generation
  316. GENERC   LDA   #1                       ;Cell will be alive in
  317.          STA   NEWPIC,X                 ; the new generation
  318. GENERD   DEX                            ;Go on to the next cell
  319.          DEX
  320.          BMI   GENERE                   ;Last cell done, go on
  321.          JMP   GENER1                   ;More cells, go back
  322. GENERE   INC   GENCT                    ;Update the screen
  323.          JSR   FIXPIC                   ;Add one to GenerationCt
  324.          LDA   #GENMSG1                 ;Send Generation message
  325.          LDX   #BLNKMSG
  326.          JSR   MSG
  327.          PEA   CELLREX|-16              ;Re-invert option
  328.          LDA   MKRTN2                   ; selected to return
  329.          CLC                            ; it to normal
  330.          ADC   #CELLREX
  331.          PHA
  332.          _INVERTRECT
  333.          LDA   LIVCT                    ;If no cells are alive,
  334.          BEQ   ENDGM                    ; go to EndGame
  335.          LDA   MKRTN                    ;Continuous selected?
  336.          CMP   #1028
  337.          BNE   GENERF                   ;No, go on with GenX1
  338.          PEA   0                        ;Mouse still down?
  339.          PEA   0
  340.          _STILLDOWN
  341.          PLA
  342.          BEQ   GENERF                   ;Button came up, GenX1
  343.          JMP   GEN                      ;Still down, generate!
  344. GENERF   JSR   GETMK                    ;Get a valid event
  345.          BCS   GENERF
  346.          LDA   MKRTN                    ;Determine which
  347.          CMP   #1024                    ; selection was made
  348.          BCC   GENERF
  349.          BEQ   ENDGM                    ;Stop, proceed to EndGame
  350.          JMP   GEN                      ;Gen/Contin, generate
  351. ENDGM    LDA   #BLNKMSG                 ;No options shown
  352.          JSR   MSG1
  353.          PEA   0                        ;For success rate, use
  354.          PEA   0                        ; LiveCount times 100
  355.          LDA   LIVCT                    ; divided by LiveStart
  356.          PHA
  357.          PEA   100
  358.          _MULTIPLY
  359.          PLA
  360.          PLX
  361.          PEA   0
  362.          PEA   0
  363.          PHA
  364.          LDA   LIVST
  365.          PHA
  366.          _UDIVIDE
  367.          PLA                            ;Change success rate
  368.          STA   TRSHV2                   ; into a string value
  369.          PLX                            ; in Success message
  370.          PHA
  371.          PEA   SCCMSG1|-16
  372.          PEA   SCCMSG1+12
  373.          PEA   4
  374.          PEA   0
  375.          _INT2DEC
  376.          LDX   #SCCMSG7                 ;Zero percent, line
  377.          LDA   TRSHV2                   ; two is Success message
  378.          BEQ   ENDGM1                   ; seven
  379.          LDX   #SCCMSG6                 ;1-69 percent, line
  380.          CMP   #70                      ; two is Success message
  381.          BCC   ENDGM1                   ; six
  382.          LDX   #SCCMSG5                 ;70-129 percent, line
  383.          CMP   #130                     ; two is Success message
  384.          BCC   ENDGM1                   ; five
  385.          LDX   #SCCMSG4                 ;130-249 percent, line
  386.          CMP   #250                     ; two is Success message
  387.          BCC   ENDGM1                   ; four
  388.          LDX   #SCCMSG3                 ;200-499 percent, line
  389.          CMP   #500                     ; two is Success message
  390.          BCC   ENDGM1                   ; three
  391.          LDX   #SCCMSG2                 ;Otherwise, it's Success
  392. ENDGM1   LDA   #SCCMSG1                 ; message two
  393.          JSR   MSG
  394.          JSR   GETMK                    ;Get any event
  395.          JMP   INIT4                    ; and restart the game
  396.  
  397. *****************************************************************
  398. *        FixPic & SLG-UpD fixes screen and updates counts       *
  399. *****************************************************************
  400.  
  401. FIXPIC   PEA   1024                     ;Starting at Cell #511
  402. FIXPIC1  PLY                            ;Are we through?
  403.          BEQ   SLGUPD                   ;Yes, do SLG
  404.          DEY                            ;Set the current offset
  405.          DEY                            ; and push it
  406.          PHY                            ; to the stack
  407.          TYA
  408.          AND   #$3E                     ;Left column?
  409.          BNE   FIXPIC2
  410.          STA   $E0C030                  ;Yes, click the speaker
  411. FIXPIC2  LDA   NEWPIC,Y                 ;NewPic different from
  412.          CMP   OLDPIC,Y                 ; OldPic?
  413.          BEQ   FIXPIC1                  ;No, do next cell
  414.          STA   OLDPIC,Y
  415.          TYA                            ;Yes, multiply cell
  416.          ASL   A                        ; offset by 4 for
  417.          ASL   A                        ; rectangle offset
  418.          STA   TRSHV1
  419.          POINT LIVINFO                  ;Pixel parms for live
  420.          LDA   NEWPIC,Y                 ;If the cell is vacant,
  421.          BNE   FIXPIC3
  422.          PLA                            ; take it back and give
  423.          PEA   VACINFO                  ; the one for vacancies
  424. FIXPIC3  POINT PIXLREC                  ;BoundsRect for PIXELS
  425.          LDY   TRSHV1
  426.          LDA   CELLREX+2,Y              ;The current cell's
  427.          PHA                            ; starting coordinates
  428.          LDA   CELLREX,Y
  429.          PHA
  430.          PEA   0
  431.          _PPTOPORT                      ;Draw the cell and
  432.          BRA   FIXPIC1                  ; go back for another
  433. SLGUPD   STZ   LIVCT                    ;Add up the live cells
  434.          LDY   #1022
  435. SLGUPD1  LDA   NEWPIC,Y
  436.          BEQ   SLGUPD2
  437.          INC   LIVCT
  438. SLGUPD2  DEY
  439.          DEY
  440.          BPL   SLGUPD1
  441.          LDA   LIVCT
  442.          PHA                            ;Change LivCt to an Ascii
  443.          PEA   SELMSG2|-16              ; string in Selection
  444.          PEA   SELMSG2+16               ; message two
  445.          PEA   3
  446.          PEA   0
  447.          _INT2DEC
  448.          LDA   GENCT                    ;Change Generation Count
  449.          PHA                            ; to an Ascii string in
  450.          PEA   GENMSG1|-16
  451.          PEA   GENMSG1+14               ; Generation message one
  452.          PEA   4
  453.          PEA   0
  454.          _INT2DEC
  455.          LDY   #2                       ;Move LivCt string into
  456. SLGUPD3  LDA   SELMSG2+16,Y             ; Selection message two
  457.          STA   GENMSG1+20,Y             ; and GenDone message one
  458.          DEY
  459.          BPL   SLGUPD3
  460.          RTS
  461.  
  462. *****************************************************************
  463. *        Screen Message Processing Routine                      *
  464. *****************************************************************
  465.  
  466. MSG      PEA   MSG|-16
  467.          PHA
  468.          PEA   MSG|-16
  469.          PHX
  470.          PEA   9                        ;Text = Blue
  471.          _SETFORECOLOR
  472.          POINT MSGSREC                  ;Clear top message box
  473.          _PAINTRECT
  474.          PEA   52                       ;Send second string to
  475.          PEA   179                      ; middle message line
  476.          _MOVETO
  477.          _DRAWSTRING
  478.          PEA   50                       ;Send first string to
  479.          PEA   167                      ; top message line
  480.          BRA   MSG2                     ;Jump down to Msg2
  481. MSG1     PEA   MSG|-16
  482.          PHA
  483.          PEA   2                        ;Text = Dk Grey
  484.          _SETFORECOLOR
  485.          POINT QUITREC                  ;Clear quit box
  486.          _PAINTRECT
  487.          POINT STRTREC                  ;Clear start box
  488.          _PAINTRECT
  489.          POINT RESTREC                  ;Clear restart box
  490.          _PAINTRECT
  491.          PEA   56                       ;Send string to bottom
  492.          PEA   194                      ; message line
  493. MSG2     _MOVETO
  494.          _DRAWSTRING
  495.          RTS
  496.  
  497. *****************************************************************
  498. *        Get mouse/keyboard events and evaluate them            *
  499. *****************************************************************
  500.  
  501. GETMK    PHA                            ;Get an event
  502.          PEA   $FFFF                    ;All events
  503.          POINT EVENT                    ;Location of event record
  504.          _GETNEXTEVENT
  505.          PLA
  506.          BEQ   GETMK
  507. GETMK2   LDA   EVENT
  508.          CMP   #1                       ;Check for mouse event
  509.          BNE   GETMK
  510.          PEA   4120                     ;Mouse event, check if
  511. GETMK3   PLA                            ; it was inside a game
  512.          BEQ   GETMK4                   ; system or box and set
  513.          SEC                            ; MKRtn accordingly
  514.          SBC   #8
  515.          STA   TRSHV1
  516.          PHA
  517.          PEA   0
  518.          POINT EVWHERE
  519.          PEA   CELLREX|-16
  520.          LDA   #CELLREX
  521.          CLC
  522.          ADC   TRSHV1
  523.          PHA
  524.          _PTINRECT
  525.          PLA
  526.          BEQ   GETMK3
  527.          PLA
  528.          STA   MKRTN2
  529.          LSR   A
  530.          LSR   A
  531.          STA   MKRTN
  532.          CLC                            ;Valid event, carry is
  533.          RTS                            ; clear on return
  534. GETMK4   SEC                            ;Invalid event, carry
  535.          RTS                            ; is set on return
  536.  
  537. *****************************************************************
  538. *        Errors handled here free of charge                     *
  539. *****************************************************************
  540.  
  541. ERRORS   BCS   ERRORS1                  ;Did an error occur?
  542.          RTS                            ;No, we're done
  543. ERRORS1  CMP   #$45                     ;Was it the wrong disk?
  544.          BNE   CRASH
  545.          JSL   $E100A8                  ;GetBootVol
  546.          DC    I2'$28',I4'BVPARM'       ;Get the boot disk for
  547.          PHA                            ; tool set and font
  548.          PEA   20                       ; loading
  549.          PEA   50
  550.          POINT PROMPT
  551.          POINT VOLNAME
  552.          POINT OK_MSG
  553.          POINT CNCLMS
  554.          _TLMOUNTVOLUME
  555.          PLA
  556.          CMP   #1
  557.          BNE   NODISK
  558.          LDA   #$DE01
  559.          RTS
  560. NODISK   LDA   #$DE00
  561.          RTS
  562. CRASH    PHA                            ;Major Malfunction,
  563.          POINT CRSHDAT                  ; display error message
  564.          _SYSFAILMGR                    ; and crash
  565.  
  566. *****************************************************************
  567. *        Fin - Shut down, quit, go home                         *
  568. *****************************************************************
  569.  
  570. FIN      _FMSHUTDOWN                    ;Shut down the tools
  571. FIN1     _EMSHUTDOWN
  572.          _QDSHUTDOWN
  573.          _MTSHUTDOWN
  574.          LDA   HANDLE+2                 ;Give back our
  575.          PHA                            ; DP memory space
  576.          LDA   HANDLE
  577.          PHA
  578.          _DISPOSEHANDLE
  579.          LDA   USERID
  580.          PHA
  581.          _MMSHUTDOWN
  582.          _TLSHUTDOWN
  583.          JSL   $E100A8                  ;GSOS Quit
  584.          DC    I2'$29',I4'FINDATA'
  585.  
  586. *****************************************************************
  587. *        Data Space - The Final Frontier                        *
  588. *****************************************************************
  589.  
  590. BVPARM   DC    I4'VOLNAME'
  591. PROMPT   DC    I1'13',C'Please Insert'
  592. OK_MSG   DC    I1'4',C'Okay'
  593. CNCLMS   DC    I1'5',C'Abort'
  594. CRSHDAT  DC    H'27',C'Major Malfunction - Error: '
  595. FINDATA  DC    6H'00'
  596. COLORS   DC    H'00005505550580009909EEEEEEEEEEEE'
  597.          DC    H'EEEE0A00BF0F000ABB0B000FBB0BDD0D'
  598. DKPTS    DC    I'124,19,124,2,194,2,125,18,125,3,193,3,30,152,30'
  599.          DC    I'22,288,22,31,151,31,23,287,23,31,183,288,183'
  600.          DC    I'288,155,32,182,287,182,287,156,31,197,117,197'
  601.          DC    I'117,184,32,196,116,196,116,185,119,197,201,197'
  602.          DC    I'201,184,120,196,200,196,200,185,203,197,288,197'
  603.          DC    I'288,184,204,196,287,196,287,185,125,19,195,19'
  604.          DC    I'195,2,126,18,194,18,194,3,31,152,288,152,288,23'
  605.          DC    I'30,183,30,155,287,155,31,182,31,156,286,156,30'
  606.          DC    I'197,30,184,116,184,31,196,31,185,115,185,118'
  607.          DC    I'197,118,184,200,184,119,196,119,185,199,185,202'
  608.          DC    I'197,202,184,287,184,203,196,203,185,286,185'
  609. PIXLREC  DC    I'0,0,8,8'
  610. LIVINFO  DC    I'0',I4'LIVCELL',I'4,0,0,8,8'
  611. VACINFO  DC    I'0',I4'VACCELL',I'4,0,0,8,8'
  612. LIVCELL  DC    H'1111111E14DDDD4E1DDADDBE1DADDDBE'
  613.          DC    H'1DDDDBBE1DDDBBBE14BBBB4EEEEEEEEE'
  614. VACCELL  DC    H'1111111E',6H'1444444E',H'EEEEEEEE'
  615. TITLE    DC    I1'8',C'LIFE  GS'
  616. HIMSG1   DC    I1'27',13H'20',C'Copyright 1990'
  617. HIMSG2   DC    I1'29',3H'20',C'MindCraft Publishing Corp.'
  618. SELMSG1  DC    I1'29',12H'20',C'Select Live Cells'
  619. SELMSG2  DC    I1'27',15H'20',C'000 Selected'
  620. GENMSG1  DC    I1'33',2H'20',C'Generation 0000, 000 Live Cells'
  621. BLNKMSG  DC    I1'1',H'20'
  622. SCCMSG1  DC    I1'29',11H'20',C'0000% Success Rate'
  623. SCCMSG2  DC    I1'27',14H'20',C'Unbelievable!'
  624. SCCMSG3  DC    I1'28',16H'20',C'Outstanding!'
  625. SCCMSG4  DC    I1'28',19H'20',C'Good job!'
  626. SCCMSG5  DC    I1'30',11H'20',C'Holding your own...'
  627. SCCMSG6  DC    I1'29',16H'20',C'Not so hot...'
  628. SCCMSG7  DC    I1'30',7H'20',C'A losing proposition...'
  629. QSRMSG   DC    I1'39',C'Quit',13H'20',C'Start',10H'20',C'Restart'
  630. GENMSG3  DC    I1'36',C'Done',10H'20',C'Generate',4H'20',C'Continuous'
  631. USERID   DS    2
  632. HANDLE   DS    4
  633. DPAGES   DS    2
  634. VOLNAME  DS    18
  635. EVENT    DS    10
  636. EVWHERE  DS    6
  637. MKRTN    DS    2
  638. MKRTN2   DS    2
  639. TRSHV1   DS    2
  640. TRSHV2   DS    2
  641. OLDPIC   DS    1024
  642. NEWPIC   DS    1024
  643. GENCT    DS    2
  644. LIVCT    DS    2
  645. LIVST    DS    2
  646. SCCRT    DS    2
  647. CELLREX  DS    4096
  648. QUITREC  DC    I'186,32,196,116'
  649. STRTREC  DC    I'186,120,196,200'
  650. RESTREC  DC    I'186,204,196,287'
  651. MSGSREC  DC    I'157,32,182,287'
  652.          END
  653.